ผู้จัดการที่ยอดเยี่ยม: ตัวควบคุมคอมไพล์เลอร์
ลองนึกภาพว่า ตัวควบคุมคอมไพล์เลอร์ (เช่น GCC) เป็นเหมือนผู้อ้างอิงหลัก มันจะดำเนินการแปลงซับซ้อนจากโค้ดแหล่งที่มนุษย์สามารถอ่านได้เป็นไฟล์ที่สามารถรันได้ในรูปแบบไบนารีโดยอัตโนมัติ กระบวนการนี้ เรียกว่า เส้นทางสู่การประมวลผลเริ่มต้นที่ เวลาคอมไพล์ และขยายไปถึง เวลาโหลด และ เวลาทำงาน.
โดยการใช้ การคอมไพล์แยกส่วนตัวควบคุมจะประมวลผล main.c และ sum.c แยกกันอย่างอิสระ การเปลี่ยนแปลงในโมดูลหนึ่งไม่จำเป็นต้องคอมไพล์โปรเจกต์ทั้งหมดใหม่ เพียงแค่ไฟล์ที่ถูกแก้ไขเท่านั้นที่จะผ่านขั้นตอนก่อนคอมไพล์ (cpp) คอมไพล์เลอร์ (cc1) และตัวแปลง (as) ก่อนที่จะถึงขั้นตอน ตัวเชื่อมโยง (ld) จะรวมผลลัพธ์ที่ได้มาเป็น ไฟล์วัตถุที่สามารถปรับตำแหน่งได้.
ประสิทธิภาพและการจัดลำดับหน่วยความจำ
การตัดสินใจจัดวางของตัวเชื่อมโยงสำหรับ grid[0][0] หรือ src[0][0] ส่งผลโดยตรงต่อ อัตราการไหลเวียน และ ความหน่วงเวลา. โดยการจัดเรียงข้อมูลให้อยู่ใน สายแคชขนาด 32 ไบต์ตัวควบคุมจะช่วยสร้างรูปแบบการเข้าถึง รูปแบบการเข้าถึงแบบลำดับที่ 1ลดการเกิด การพลาดเมื่อเริ่มต้น และหลีกเลี่ยง การลบออกเนื่องจากการสแกนตามคอลัมน์. ในรหัสที่มีประสิทธิภาพสูงขั้นสูง การขนานแบบปลดล็อกวงจร ($4 \times 4$ วงจรที่ถูกปลดล็อก) ช่วยซ่อน การจัดวางจากหน่วยความจำหลักไปยังแคช ความหน่วงเวลา โดยการเพิ่มประสิทธิภาพรอบการจับเวลาของนาฬิกา (0x32, 0x1, 0x4, 0x51)